import datetime
import time


def invoke_datetime():
    # 获取当前日期和时间 结果 2024-01-28 16:54:24.814860
    print(datetime.datetime.now())

    # 获取指定时间 结果 2024-01-28 16:50:00
    datetest = datetime.datetime(2024, 1, 28, 16, 50, 0)
    print(datetest)

    # 获取日期的年月日时分秒 结果:2024-1-28 16:50:0
    print(
        str(datetest.year) + "-" + str(datetest.month) + "-" + str(datetest.day) + " " + str(datetest.hour) + ":" + str(
            datetest.minute) + ":" + str(datetest.second))

    # fromtimestamp() 函数
    # 将时间戳转换为datetime对象
    # 1970-01-01 10:46:40
    # 2024-01-28 17:01:27.940257
    dt1 = datetime.datetime.fromtimestamp(10000)
    dt2 = datetime.datetime.fromtimestamp(time.time())
    print(dt1)
    print(dt2)

    # strptime()函数 可以将日期字符串转换成 datetime 类型
    # strftime()函数 可以将 datetime 类型转换成字符串

    datetest = datetime.datetime.strptime('2024-01-28 17:00:00', '%Y-%m-%d %H:%M:%S')
    now = datetime.datetime.now()
    print(datetime.datetime.strftime(now, '%Y-%m-%d %H:%M:%S'))
    print(datetest)
    print(now)

    # timedelta()函数 返回一个 timedelta 类型的数据，它表示一段时间而不是一个时刻，多用于日期的增加和减少场景
    # 2024-01-28 17:11:43.085835
    # 2024-01-29 03:11:43.085835
    # 2024-01-27 17:11:43.085835
    print("timedelta")
    now = datetime.datetime.now()
    print(now)
    newdate = now + datetime.timedelta(hours=10)
    print(newdate)
    newdate = now - datetime.timedelta(days=1)
    print(newdate)


# time模块
def invoke_time():
    # time()函数 返回的值是带小数点的，它表示从 Unix 纪元（1970年1月1日0点）到执行代码那一刻所经历的时间的秒数，这个数字称为UNIX纪元时间戳
    # 结果 1706433260.0935662
    print("当前时间戳: {}".format(time.time()))
    time_exec()

    # sleep()函数 有个参数，表示需要暂停的秒数
    for i in range(2):
        print('one')
        print(time.time())
        time.sleep(1)
        print('two')
        print(time.time())
        time.sleep(1)
    print('运行完成')


def calculateTime():
    item = 1
    for i in range(1, 100000):
        item = item + i
    return item


def time_exec():
    startTime = time.time()
    result = calculateTime()
    endTime = time.time()
    print("计算结果: ", str(result))
    print("执行时间: ", (endTime - startTime))
